﻿// -----------------------------------------------------------------------
// <copyright file="IViewDataService.cs" company="AGR">
// TODO: Update copyright text.
// </copyright>
// -----------------------------------------------------------------------

namespace AGR.Services.FormInformation
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Linq.Expressions;
    using AGR.Model;
    //using AGR.Data.Context;
    
    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public interface IFormInformationService : IDisposable
    {
        IList<Country> GetCountries();
        Country GetCountry(Expression<Func<Country, bool>> predicate);
        ActionResult AddCountry(Country entity);
        ActionResult UpdateCountry(Country entity);
        ActionResult DeleteCountry(Country entity);
        ActionResult DeleteCountry(string countryName, string user);

        IList<Equity> GetEquitys();
        Equity GetEquity(Expression<Func<Equity, bool>> predicate);
        ActionResult AddEquity(Equity entity);
        ActionResult UpdateEquity(Equity entity);
        ActionResult DeleteEquity(Equity entity);
        ActionResult DeleteEquity(string equityName, string user);

        IList<Language> GetLanguages();
        Language GetLanguage(Expression<Func<Language, bool>> predicate);
        ActionResult AddLanguage(Language entity);
        ActionResult UpdateLanguage(Language entity);
        ActionResult DeleteLanguage(Language entity);
        ActionResult DeleteLanguage(string languageName, string user);

        IList<Month> GetMonths();
        Month GetMonth(Expression<Func<Month, bool>> predicate);
        ActionResult AddMonth(Month entity);
        ActionResult UpdateMonth(Month entity);
        ActionResult DeleteMonth(Month entity);
        ActionResult DeleteMonth(string monthName, string user);

        IList<Province> GetProvinces();
        Province GetProvince(Expression<Func<Province, bool>> predicate);
        ActionResult AddProvince(Province entity);
        ActionResult UpdateProvince(Province entity);
        ActionResult DeleteProvince(Province entity);
        ActionResult DeleteProvince(string provinceName, string user);

        IList<ResedentialStatus> GetResedentialStatus();
        ResedentialStatus GetResedentialStatus(Expression<Func<ResedentialStatus, bool>> predicate);
        ActionResult AddResedentialStatus(ResedentialStatus entity);
        ActionResult UpdateResedentialStatus(ResedentialStatus entity);
        ActionResult DeleteResedentialStatus(ResedentialStatus entity);
        ActionResult DeleteResedentialStatus(string resedentialStatusName, string user);

        IList<Weekday> GetWeekdays();
        Weekday GetWeekday(Expression<Func<Weekday, bool>> predicate);
        ActionResult AddWeekday(Weekday entity);
        ActionResult UpdateWeekday(Weekday entity);
        ActionResult DeleteWeekday(Weekday entity);
        ActionResult DeleteWeekday(string weekdaysName, string user);
    }
}
